/**
 * 通过 SSH 在远程服务器上解压 war 包到 /webapps/ROOT
 * 并在解压前清空目标目录内容
 * @param ip  服务器 IP
 * @param remotePath  tomcat 安装目录 /home/server/servers/tomcats/friday-apache-tomcat-7.0.54_8080
 * @param projectName  项目名称
 * @param root  解压目录
 * @param localWebappsPath  静态资源地址
 */
void call(String ip, String javaHome, String remotePath , String projectName,String root,String localWebappsPath) {
    String warPath="${remotePath}${projectName}.war"
    String jenkinsTempPath="${remotePath}jenkinsTemp/${root}/"
    String rootPaht="${remotePath}webapps/${root}/"
    withCredentials([sshUserPrivateKey(
            credentialsId: 'ssh_key',
            keyFileVariable: 'SSH_KEY',
            usernameVariable: 'USER'
    )]) {
        // 清空远程目录内容
        ssh.sshVoid(ip, "rm -rf ${rootPaht}*")
        println("✅ ${rootPaht} 下文件已清除")
        // 清空临时目录
        ssh.sshVoid(ip, "rm -rf ${jenkinsTempPath}")
        println("✅ ${jenkinsTempPath} 下文件已清除")
        // 创建临时目录
        ssh.sshVoid(ip, "mkdir -p ${jenkinsTempPath}")
        //将静态资源文件拷贝到远程服务器
        scp.call(ip, localWebappsPath, remotePath, "")
        println("✅ ${localWebappsPath} 静态资源已复制到 ${remotePath} ")

        // 解压 war 文件到目标目录
        ssh.sshVoid(ip, "cd ${jenkinsTempPath} && echo realpath . && ${javaHome}bin/jar -xvf  ${warPath}  ")
        println("✅ ${warPath} 已解压到 ${jenkinsTempPath} ")
        //   删除旧的class文件夹
        ssh.sshVoid(ip, " rm -rf  ${rootPaht}WEB-INF/classes")
        println("✅ ${rootPaht}WEB-INF/classes 文件已删除")
        ssh.sshVoid(ip, "cp -r ${jenkinsTempPath}WEB-INF/classes     ${rootPaht}WEB-INF/")
        println("✅ ${jenkinsTempPath}WEB-INF/classes 已复制到 ${rootPaht}WEB-INF/classes")

        //   删除旧的lib文件夹
        ssh.sshVoid(ip, " rm -rf  ${rootPaht}WEB-INF/lib")
        println("✅ ${rootPaht}WEB-INF/lib 文件已删除")
        ssh.sshVoid(ip, "cp -r ${jenkinsTempPath}WEB-INF/lib     ${rootPaht}WEB-INF/")
        println("✅ ${jenkinsTempPath}WEB-INF/lib 已复制到 ${rootPaht}WEB-INF/lib")

    }
}
